Bonjour forum,
Denis Szalkowski pense qu'on ne peut pas n'autoriser que firefox à sortir sur les ports 80 et 443 .
Après recherche rapide, j'ai l'impression que la meilleure solution serait de combiner une isolation en cgroup (grâce à systemd ?) et un filtrage meta cgroup grâce à nftables. Je n'ai jamais fait cela et n'ai pas le temps aujourd'hui.
Points bonus : Je soupçonne qu'une notification graphique XDG correspondant au rejet d'une connexion sortante avec des informations concernant l'application concernée ou le cgroup serait bienvenue —voire un moyen (toujours graphique ?) de rejeter définitivement (ou accepter, mais ça nécessite probablement de créer un cgroup ad-hoc, donc pas forcément facile ou possible).
Est-ce possible, tout ça ?
# AppArmor
Posté par Seb . Évalué à 1.
Jamais testé, mais je pense qu'avec AppArmor on doit pouvoir arriver à faire ça :
http://wiki.apparmor.net/index.php/AppArmor_Core_Policy_Reference#Network_rules
La facilité d'implémentation doit dépendre de la ditribution.
[^] # Re: AppArmor
Posté par Denis Szalkowski . Évalué à 2.
Je n'ai rien vu quant à la configuration du port dans la doc de AppArmor. Seulement le protocole.
[^] # Re: AppArmor
Posté par Seb . Évalué à 1.
bien vu ;)
http://manpages.ubuntu.com/manpages/lucid/en/man5/apparmor.d.5.html
"There is no mediation based of port number or protocol beyond tcp, udp, and raw"
# NuFW
Posté par Hodj . Évalué à 2.
Ca fait un petit moment que je ne le suis plus mais il y avait un Firewall sous GPL qui s'appelait NuFW et qui permettait de créer des règles du type toto peut sortir sur le port 80 avec Firefox et titi avec ie …
L'éditeur a fermé en 2011 et il a changé de nom, il s’appelle fwi-filterd.
[^] # Re: NuFW
Posté par Denis Szalkowski . Évalué à 2.
Il s'agit en fait de Ufwi. Le projet semble moribond comme ceux de Fireflier, TuxGuardian et de Program Guard, qui s'appuient sur NFQUEUE. Je me suis servi de Fireflier. Ça marchait bien ! Aujourd'hui, ces logiciels sont difficilement compilables. Nufw ou Ufwi n'existe plus dans les dépôts de la Fedora.
J'ai vu un autre projet, Douane, qui lui non plus, en semble pas très vivace.
# Utilisateur limité.
Posté par deuzene (site web personnel) . Évalué à 1.
Question de béotien :
Ne peut-on limiter les droits d'accès réseau au niveau du compte utilisateur ? Il me semble que c'est ce que fait le Tor Bundle en créant un utilisateur 'tor'.
(Et une appli dockerisée ?)
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# owner
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
Je faisais un truc comme cela dans le temps via le module owner et cmd-owner afin d'interdire au programme acroread d'aller sur le net. Mais malheureusement, cela a été retiré du noyau. C'est pas fiable à 100% car on renommait son processus et il passait la barrière mais c'était simple et parfois, les choses simples marchent dans pas mal de cas…
J'ai trouvé un autre piste via http://stackoverflow.com/questions/4314163/create-iptables-rule-per-process-service mais je n'ai pas testé. Tu crée un groupe grp-firefox et tu rend firefox sgid sur ce groupe. Puis tu appliques une règle via
C'est pas bien clean clean car on touche au bit sgid… mais cela pourrait marcher !iptables -A OUTPUT -dport 80 -m owner --gid-owner grp-firefox -j ACCEPT
iptables -A OUTPUT -dport 80 -j REJECT
[^] # Re: owner
Posté par Denis Szalkowski . Évalué à 1.
On peut le faire aussi avec l'uid. Mais c'est d'un compliqué à gérer… Mais je me demande si ça s'applique quand on est root ???
[^] # Re: owner
Posté par Denis Szalkowski . Évalué à 1.
Sous root/MATE/Fedora 22 :
useradd firefox
chgrp firefox /usr/lib64/firefox/firefox
chmod g+s /usr/lib64/firefox/firefox
firefox &
Et là : "You must create a helper progam instead"
-> http://www.gtk.org/setuid.html
???
# avec un proxy ?
Posté par eric gerbier (site web personnel) . Évalué à 1.
On pourrait aussi le faire avec un proxy :
- mettre en place un proxy http/https sur un port non standard (squid ?)
- bloquer les sorties sur les ports http/https
- ne renseigner le proxy que dans firefox
[^] # Re: avec un proxy ?
Posté par GG (site web personnel) . Évalué à 3.
Certains logiciels vont aller fouiller les paramètres proxy des navigateurs, donc ça ne fonctionnera pas pour ces logiciels.
Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html
[^] # Re: avec un proxy ?
Posté par Denis Szalkowski . Évalué à 1.
J'ai pris, là, l'exemple de Firefox. Mais élargissons. J'ai un client Torrent du type transmission auquel je veux associer le port UDP 60000 en entrant. Je fais comment ?
Le proxy est un filtrage "applicatif". Ce dont nous avons besoin, c'est ce qui existait avec Fireflier ou bien une console du type wf.msc comme elle existe sous Windows.
# Voyager dans le multispace (ou multivers, ce genre de trucs)
Posté par Florent Fourcot . Évalué à 2.
Je pense qu'isoler les programmes dans un espace réseau différent, avec des règles de réseaux différentes (met à la poubelle tout ce qui n'est pas sur le port 443) marchera bien.
Le manuel sera plus efficace que moi pour introduire la solution :
http://man7.org/linux/man-pages/man8/ip-netns.8.html
[^] # Re: Voyager dans le multispace (ou multivers, ce genre de trucs)
Posté par Denis Szalkowski . Évalué à 2.
Je n'ai rien vu sur ip netns permettant le contrôle des ports et des protocoles. C'est plutôt pour du routage.
[^] # Re: Voyager dans le multispace (ou multivers, ce genre de trucs)
Posté par Florent Fourcot . Évalué à 2.
Oui enfin une fois que tu as séparé ton réseau, iptables ou NFtables vont faire le boulot très facilement.
[^] # Re: Voyager dans le multispace (ou multivers, ce genre de trucs)
Posté par Denis Szalkowski . Évalué à 1.
@Florent
Je parle de Linux sur une station de travail et le fait de contrôler les paquets qui sortent des process (pid) ! Parlons-nous vraiment de la même chose ?
[^] # Re: Voyager dans le multispace (ou multivers, ce genre de trucs)
Posté par Florent Fourcot . Évalué à 2.
Oui.
1) tu déclares des espaces réseaux différents (via le noyaux de ton ordinateur/station de travail). Ca ne change rien au niveau matériel
2) tu mets des règles de pare-feux sur tes espaces (du genre "espace avec le nom Firefox, tout est filtré sauf le port 443". En pratique ça sera de l'iptables sur tes interfaces virtuelles)
3) tu mets ton firefox dans l'espace qui va bien (en signalant au noyau que tel PID doit suivre les règles de tel espace).
Et voilà. Ca me semble parfaitement possible avec ce qui existe actuellement. J'ai jamais testé sur mon ordinateur personnel cependant (je vais peut-être faire ça ce week-end du coup).
[^] # Re: Voyager dans le multispace (ou multivers, ce genre de trucs)
Posté par Denis Szalkowski . Évalué à 1.
Ça fait 3 ans que je cherche !
# Bien sur!
Posté par nextgens (site web personnel) . Évalué à 2.
Salut Feth!
Je viens de faire un post a ce propos sur mon blog:
http://florent.daigniere.com/posts/2015/07/application-firewalling-with-netfilter/
Les firewalls applicatifs c'est une tres mauvaise idee. Ca sert pas a grand chose… mais oui c'est possible.
[^] # Re: Bien sur!
Posté par Denis Szalkowski . Évalué à 1.
Contrôler ce qui sort d'une machine, c'est inutile ? Ah bon. En matière de sécurité, au niveau d'une station de travail, c'est tout juste le b.a.-ba.
Blague à part. C'est quoi au juste nextgens, users au niveau de la commande cgcreate dans ton "tuto". As-tu testé ?
# SYNTHESE
Posté par Denis Szalkowski . Évalué à -1. Dernière modification le 26 juillet 2015 à 08:06.
SELinux ne prend en charge que les paquets en mode SECMARK dans Iptables.
AppArmor ne prend pas en charge les ports et le protocoles.
Le commutateur—cgroup n'est pas pris en charge dans
Iptables. Sinon, c'était une excellent idée !!!
Ip-netns n'est pas fait pour ça.
Fireflier, Program Guard, TuxGuardian, Ufwi, Douane sont dans les choux.
Les commutateurs --gid-owner et --uid-owner dans Iptables ne sont pas possibles du fait que GTK, KDE, etc n'autorisent pas l'exécution en mode sgid ou suid.
Autrement dit, il n'y a pas de solution à ce jour pour filtrer les paquets associés à un process. Et c'est tout de même un comble quand Windows et Mac OS X proposent tous deux cette fonctionnalité. Faut-il en déduire que Linux n'est pas fait pour la station de travail ? Pour ma part, je le pense.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.